package ru.amse.baltijsky.javascheme.exporter.stream;

import java.io.IOException;

/**
 * Factory for stream exporters. Creates exporters provided the desired exporter type (alias).
 */
public interface IStreamExporterFactory {
    /**
     * Creates an exporters for the provided alias
     *
     * @param alias alias (name) of the exporter to create
     * @return the exporter object
     * @throws IOException              if a creation of exporter failed for any reason
     *                                  (it is reasonable to expect the actual exception to be wrapped in the thrown IOE).
     * @throws IllegalArgumentException if the specified exporter type is not supported
     */
    public IStreamExporter createExporter(String alias) throws IOException, IllegalArgumentException;
}
